
// type Foo = string | number

// 别人新增了一个布尔类型
type Foo = string | number | boolean;

function controlFlowAnalysisWithNever(foo: Foo) {
  if (typeof foo === "string") {
    // 这里 foo 被收窄为 string 类型
    console.log(foo.length);

  } else if (typeof foo === "number") {
    // 这里 foo 被收窄为 number 类型
    console.log(foo + 1);

    // 如果别人添加了一个布尔类型的话，这个布尔类型的逻辑必须实现
  } else if (typeof foo === 'boolean') {
    console.log(foo);
  }
  else {
    // foo 在这里是 never
    const check: never = foo;
  }
}

controlFlowAnalysisWithNever(true)